package com.interview.rpc.example;

import com.interview.rpc.client.RpcClient;
import com.interview.rpc.proxy.RpcClientProxy;

/**
 * RPC客户端演示
 * 
 * 演示如何使用RPC客户端调用远程服务
 */
public class RpcClientDemo {
    
    public static void main(String[] args) throws Exception {
        // 创建RPC客户端并连接服务器
        // "localhost"表示服务器运行在本地，8080是服务器监听的端口
        RpcClient rpcClient = new RpcClient("localhost", 8080);
        rpcClient.connect();
        
        // 创建代理对象
        // 代理对象可以让用户像调用本地方法一样调用远程服务
        RpcClientProxy proxy = new RpcClientProxy(rpcClient);
        UserService userService = proxy.getProxy(UserService.class);
        
        // 调用远程方法
        // 这看起来像是本地方法调用，但实际上会通过网络发送到服务器执行
        System.out.println("调用getUserById(1L)方法:");
        User user = userService.getUserById(1L);
        System.out.println("获取用户信息: " + user);
        
        // 创建新用户
        System.out.println("\n调用createUser方法:");
        User newUser = new User(4L, "赵六", 28);
        boolean result = userService.createUser(newUser);
        System.out.println("创建用户结果: " + result);
        
        // 关闭客户端连接
        rpcClient.close();
    }
}